const User = require('../models/userModel');

const activityCheck = (req, res, next) => {
  const userId = req.user?.id || req.params.userId;
  
  if (userId) {
    // 更新最后活跃时间
    User.updateLastActive(userId, (err) => {
      if (err) {
        console.error('Error updating last active:', err);
      }
      
      // 检查是否超过5分钟未活动
      User.getStatus(userId, (err, user) => {
        if (err) {
          console.error('Error getting user status:', err);
          return next();
        }
        
        if (user.status === 'online' && user.last_active) {
          const lastActive = new Date(user.last_active);
          const now = new Date();
          const diff = (now - lastActive) / 1000 / 60; // 分钟
          
          if (diff > 5) {
            User.updateStatus(userId, 'offline', (err) => {
              if (err) {
                console.error('Error updating status:', err);
              }
            });
          }
        }
        next();
      });
    });
  } else {
    next();
  }
};

// 每 5 分钟检查一次不活跃用户
setInterval(() => {
  User.checkInactiveUsers((err) => {
    if (err) {
      console.error('Error checking inactive users:', err);
    } else {
      console.log('Inactive users updated to offline');
    }
  });
}, 5 * 60 * 1000); // 5 分钟

module.exports = activityCheck; 